package com.example.designpatterns.chain;

/**
 * Request类 - 在责任链中传递的请求对象
 */
public class Request {
    // 请求类型
    public enum RequestType {
        // 信息请求
        INFO,
        // 调试请求
        DEBUG,
        // 警告请求
        WARNING,
        // 错误请求
        ERROR,
        // 严重错误请求
        CRITICAL
    }

    // 请求类型
    private RequestType type;
    // 请求消息
    private String message;
    // 请求优先级（1-10，10为最高）
    private int priority;
    // 请求是否已处理
    private boolean handled;

    /**
     * 创建一个新的请求
     *
     * @param type     请求类型
     * @param message  请求消息
     * @param priority 请求优先级
     */
    public Request(RequestType type, String message, int priority) {
        this.type = type;
        this.message = message;
        this.priority = priority;
        this.handled = false;
    }

    /**
     * 获取请求类型
     *
     * @return 请求类型
     */
    public RequestType getType() {
        return type;
    }

    /**
     * 获取请求消息
     *
     * @return 请求消息
     */
    public String getMessage() {
        return message;
    }

    /**
     * 获取请求优先级
     *
     * @return 请求优先级
     */
    public int getPriority() {
        return priority;
    }

    /**
     * 检查请求是否已处理
     *
     * @return 是否已处理
     */
    public boolean isHandled() {
        return handled;
    }

    /**
     * 标记请求为已处理
     */
    public void setHandled(boolean handled) {
        this.handled = handled;
    }

    @Override
    public String toString() {
        return "Request [type=" + type + ", message='" + message + '\'' + ", priority=" + priority + "]";
    }
} 